home *** CD-ROM | disk | FTP | other *** search
- assume cs:text
- text segment para public 'CODE'
-
- public _draw4
- _draw4 proc near
- push ebp
- push ebx
- push ecx
- push edx
- push esi
- push edi
- mov edi,28[esp] ; edi <-- work
- mov ebp,36[esp] ; ebp <-- bitmap data structure
- mov esi,[ebp] ; esi <-- PixelPattern
- add esi,40[esp]
- mov edx,4[ebp] ; edx <-- MaskPattern
- add edx,40[esp]
- mov ebp,44[esp] ; bit mask
- #0:
- mov ecx,48[esp] ; ecx <-- width
- mov eax,[esi] ; eax <-- *pix++
- add esi,4
- mov ebx,[edx] ; ebx <-- *mask++
- add edx,4
- push edx
- mov dl,60[esp] ; black pixel
- mov dh,64[esp] ; while pixel
- #1:
- test ebx,ebp ; mask check
- je SHORT #3
- test eax,ebp ; pixel check
- je SHORT #2
- mov [edi],dl ; black
- jmp SHORT #3
- #2:
- mov [edi],dh ; white
- #3:
- inc edi
- shr eax,1
- shr ebx,1
- loop #1
-
- pop edx
- add edi,32[esp]
- dec dword ptr 52[esp] ; height--
- jnz SHORT #0
- pop edi
- pop esi
- pop edx
- pop ecx
- pop ebx
- pop ebp
- ret
- _draw4 endp
-
- public _putbyte
- _putbyte proc near
- push ebx
- mov eax,8[esp]
- mov bl,12[esp]
- mov fs:[eax],bl
- pop ebx
- ret
- _putbyte endp
-
- public _putnibble
- _putnibble proc near
- push ebx
- mov eax,8[esp]
- mov bl,fs:[eax]
- and bl,12[esp]
- or bl,16[esp]
- mov fs:[eax],bl
- pop ebx
- ret
- _putnibble endp
-
- text ends
- end
-